﻿internal class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
       
        
            Car car = new Car(1);
            car.Run();
            car.加油();

        
    }
}

//3.编程实现以下功能：
//(1)    声明一个车的父类，有两个构造函数，一个无参数，一个把车龄作为参数，输出车龄；有一个run虚方法，输出“车能够行驶”, 一个抽象方法加油
//(2)    声明一个car类，调用父类特定构造函数，并重写父类run方法，输出“小汽车的速度可以达到100mile”，重写加油方法，输出“这辆车一次可以加 升油”。
//(3)    在主程序中实例化一个car对象，调用run方法和加油方法。
//(4)    在以上程序基础上，把父类改造成接口，子类car实现这个接口，在主程序中调用run方法和加油方法。

/// <summary>
/// 主程序
/// </summary>







/// <summary>
/// 声明一个车的父类
/// </summary>
public abstract class BaseCar//父类
{
    public int Age { get; set; }
    /// <summary>
    /// 无带参构造函数
    /// </summary>
    public BaseCar()
    {

    }
    /// <summary>
    /// 有参构造函数
    /// </summary>
    /// <param name="a">参数</param>
    public BaseCar(int a)
    {
        Console.WriteLine(a);
    }
    //virtual虚拟
    /// <summary>
    /// run虚方法
    /// </summary>
    public virtual void Run()
    {
        Console.WriteLine("车能够行驶");
    }
    /// <summary>
    /// abstract抽象方法(抽象方法必须在抽象类中)
    /// </summary>
    public abstract void 加油();

}

/// <summary>
/// 声明一个car类
/// </summary>
public class Car:BaseCar
{
    public int a { get; set; }
    public Car(int a):base(a)
    {

    }

    /// <summary>
    /// override重写
    /// </summary>
    public override void Run()
    {
        Console.WriteLine("小汽车的速度可以达到100mile");
    }

    public override void 加油()
    {
        Console.WriteLine("辆车一次可以加 升油");
    }
   
}


